<?php
/**
 * Classe para lidar com as tarefas
 * 
 * @author Ricardo Simão
 * @version 1.0
 *
 */

class App_TasksService extends App_Abstract_TablesCRUD {
	
	/**
	 * Guarda os valores do ficheiro de configuração da base de dados das tarefas
	 *
	 * @var array
	 */
	protected $config;
	/**
	 * Inicializa o adaptador de ligação à base de dados
	 *
	 * @var Zernd_DB
	 */
	protected $db;
	/**
	 * Guarda os dados do utilizador que está autenticado
	 *
	 * @var array
	 */
	protected $userInfo;
	/**
	 * Identificador único das tarefas
	 *
	 * @var string
	 */
	protected $id2;
	/**
	 * Quem cria a tarefa
	 *
	 * @var string
	 */
	protected $requisitante;
	/**
	 * Para quem a tarefa é dirigida
	 *
	 * @var string
	 */
	protected $para;
	/**
	 * Email da pessoa a enviar a tarefa
	 *
	 * @var string
	 */
	protected $email;
	/**
	 * Data de criação da tarefa
	 *
	 * @var string
	 */
	protected $data_in;
	/**
	 * Data limite para a conclusão da tarefa
	 *
	 * @var string
	 */
	protected $data_out;
	/**
	 * Em que estado se encontra a tarefa (0% - 100%)
	 *
	 * @var int
	 */
	protected $estado;
	/**
	 * Actualização do estado da tarefa
	 *
	 * @var string
	 */
	protected $estado_update;
	/**
	 * Quando foi a tarefa finalizada
	 *
	 * @var string
	 */
	protected $terminada_date;
	/**
	 * Qual o assunto da tarefa
	 *
	 * @var string
	 */
	protected $assunto;
	/**
	 * O texto da tarefa
	 *
	 * @var string
	 */
	protected $tarefa;
	/**
	 * Valores para inserir na base de dados das tarefas
	 *
	 * @var array
	 */
	protected $params;
	/**
	 * Quantas tarefas o utilizador tem por ler
	 *
	 * @var int
	 */
	protected $unread;
	/**
	 * Quantas tarefas o utilizador expiradas
	 *
	 * @var int
	 */
	protected $expired;
	/**
	 * Quantas tarefas o utilizador tem activas
	 *
	 * @var int
	 */
	protected $active;
	/**
	 * Quantas tarefas o utilizador tem finalizadas
	 *
	 * @var int
	 */
	protected $finished;
	/**
	 * Define a data no formato (0000-00-00)
	 *
	 * @var string
	 */
	protected $date;
	
	/**
	 * Lê os dados do ficheiro de configuração
	 * Inicializa a base de dados das tarefas
	 * Recupera so dados do utilizador registado
	 */
	function __construct() {
		
		$config = Zend_Registry::get ( 'tarefas' );
		$db = Zend_Db::factory ( $config->database );
		Zend_Db_Table_Abstract::setDefaultAdapter ( $db );
		
		$this->tarefas = new TarefasTable ( );
		$userInfo = Zend_Auth::getInstance ()->getStorage ()->read ();
		$this->real_name = $userInfo->real_name;
	}
	
	/**
	 * Insere na base de dados uma nova tarefa
	 */
	public function createItem($id2, $requisitante, $para, $email, $data_in, $data_out, $estado, $estado_update, $terminada_date, $assunto, $tarefa) {
		
		$params = array ('id2' => $id2, 'requisitante' => $requisitante, 'para' => $para, 'email' => $email, 'data_in' => $data_in, 'data_out' => $data_out, 'estado' => $estado, 'estado_update' => $estado_update, 'terminada' => 0, 'terminada_date' => $terminada_date, 'assunto' => $assunto, 'tarefa' => $tarefa, 'lida' => 0 );
		
		$this->tarefas->insert ( $params );
	
	}
	
	/**
	 * Apaga tarefas da base de dados
	 */
	public function deleteItem() {
	
	}
	
	/**
	 * Recupera todas as tarefas do utilizador registado 
	 */
	public function readAll() {
	
	}
	
	/**
	 * Actualiza uma tarefa
	 * 
	 */
	public function updateItem() {
	
	}
	
	/**
	 * Recupera quantas tarefas do utilizador registado estão por ler
	 *
	 * @return array
	 */
	public function dashBoardUnreadTasks() {
		
		$unread = $this->tarefas->fetchAll ( "lida = '0' AND para = '$this->real_name'" );
		
		return $unread;
	}
	/**
	 * Recupera quantas tarefas do utilizador registado estão expiradas
	 *
	 * @return array
	 */
	
	public function dashBoardExpiredTasks() {
		$date = date ( 'Y-m-d' );
		
		$expired = $this->tarefas->fetchAll ( "para = '$this->real_name' AND data_out < '$date'" );
		return $expired;
	}
	/**
	 * Recupera quantas tarefas do utilizador registado estão activas
	 *
	 * @return array
	 */
	
	public function dashBoardActiveTasks() {
		
		$active = $this->tarefas->fetchAll ( "para = '$this->real_name' AND lida = '1'" );
		return $active;
	}
	
	/**
	 * Recupera quantas tarefas do utilizador registado estão finalizadas
	 *
	 * @return array
	 */
	public function dashBoardFinishedTasks() {
		
		$finished = $this->tarefas->fetchAll ( "para = '$this->real_name' AND terminada = '1'" );
		return $finished;
	}
	
	/**
	 * Através do id2 (id único da tarefa) recupera o id da tarefa para um URL mais limpo e pequeno
	 *
	 * @param string $id2
	 */
	public function retriveIDbyID2($id2) {
		
		$id = $this->tarefas->select()->where('id2 = ?', $id2);
		$row = $this->tarefas->fetchRow($id);
		return $row;
	}

}

?>